#pragma once

#include "Object/Object.h"

#include "TestStruct.h"
#include "TestObject2.h"
#include "Path/Path.h"
#include "Containers/ScriptDelegateImplement.h"
#include "Output/Console.h"
#include "TestObject.m.h"

RCLASS()
class RTestObject : public RObject
{
    ROBJECT

public:
    RTestObject()
    {
        TestStruct.sss=33;

        TestStructMap.Add(0,TestStruct);
        TestStructMap.Add(8,TestStruct);
    }

    RFIELD()
    int s=5;

    RFIELD()
    CString str = U"asfasd";

    RFIELD()
    bool Bool = true;

    RFIELD()
    float Float = .1f;

    RFIELD()
    float Double = .2;

    RFIELD()
    STestStruct TestStruct;

    RFIELD()
    TVector<int> IntArray = { 1,2,34,5 };

    RFIELD()
    TMap<int,STestStruct> TestStructMap;

    RFIELD()
    RTestObject2Ptr TestObject;    

    RFIELD()
    SGuid ID;

    RFIELD()
    SPath TestPath;

    RFIELD()
    TSubclassOf<RObject> SubclassOfObject;

    RFIELD()
    TScriptDelegate<void()> TestDelegate;

    RFUNCTION()
    void TestFunction()
    {
        RConsole::PrintLine(U"TestFunction");
    }

    TVector<STestStruct> STRUCTs;


};